#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#if 0

用于将字符串转换成整数.

long int strtol(const char *str, char **endptr, int base);
该函数将str所指向的字符串根据给定的base转换为一个long int型的长整数，base必须介于2和36之间，或者是特殊值0。

参数

str：要转换为长整数的字符串
endptr：对类型为char* 的对象的引用，其值由函数设置为str中数值后的下一个字符。
base：基数，必须介于2和36之间，或者是特殊值0。base代表的采用的进制方式。如base值为2就代表采用的二进制。
	        当base值为0时则是采用10进制做转换。当遇到"0x"前置字符则会采用16进制做转换。

功能

开始时，strtol会扫描nptr所指向的字符串，这时它会跳过非法字符，
如：空格。直到遇见数字或者"+、—"号才开始转换，再遇到非数字或者"\0"时结束转换。
并将结果返回（返回长整型的整数）。

返回值

返回转换之后的长整型数，否则对异常返回并且设置errno。

几点说明
1.strtol会从nptr所指向字符串的头不开始查找，当遇到数字或"+、-"时就开始转换，遇到其他的字符则停止转换并返回。
如果字符串中穿插着两串数字，则只会对第一串数字进行转换。
2.如果endptr不是NULL，strtol()会将第一个无效的字符的地址方到*enptr。
3.如果字符串中没有数字，strtol()会将nptr的初始值，存储到endptr中，并且返回0。

#endif 

int main () {
   char str[30] = "2030300 This is test";
   char str1[30] = ".";
   char str2[30] = "..";
   char *ptr;
   long ret;

   ret = strtol(str, &ptr, 10);
   printf("The number(unsigned long integer) is %ld\n", ret);	// The number(unsigned long integer) is 2030300
   printf("String part is |%s|\n", ptr);						// String part is | This is test|

   ret = strtol(str1, &ptr, 10);
   printf("The number(unsigned long integer) is %ld\n", ret);	// 0
   printf("String part is |%s|\n", ptr);						// |.|

   ret = strtol(str2, &ptr, 10);
   printf("The number(unsigned long integer) is %ld\n", ret);	// 0
   printf("String part is |%s|\n", ptr);						// |..|

   return (0);
}









